/**
 * @Author       : Mo 2427995270@qq.com
 * @Date         : 2025-06-07 13:21:41
 * @LastEditTime : 2025-06-18 15:13:52
 * @FilePath     : \GD32F407_BL\mobl\hal_driver\ll_flash.h
 * @Description  : 片内flash低层驱动
 * @Version      : V1.0
 * @History      : 
 * @Note         : 
 */
#ifndef  __ll_flash_H__
#define  __ll_flash_H__

/***************************************Includes***********************************/

#include <stdint.h>

/*************************************Public Macros********************************/
//#define


/***********************************Public Statement*******************************/



/***********************************Public Functions*******************************/

/**
 * @brief 片内flash写入 带擦除
 * @param  addr             要写入的地址 4字节对齐
 * @param  buf              要写入的数据
 * @param  len              数据的字节数 4的倍数
 * @return uint32_t 写入的字节数
 * @note null
 */
uint32_t flash_ll_write(uint32_t addr, uint32_t *buf, uint32_t len);
/**
 * @brief 片内flash写入 不擦除
 * @param  addr             要写入的地址 4字节对齐
 * @param  buf              要写入的数据
 * @param  len              数据的字节数 4的倍数
 * @return uint32_t 写入的字节数
 * @note null
 */
uint32_t flash_ll_write_no_erase(uint32_t addr, uint32_t *buf, uint32_t len);
/**
 * @brief 片内flash读取
 * @param  addr             要读取的地址 不需对齐，但性能较低
 * @param  buf              要读取数据的buf
 * @param  len              数据的字节数 4的倍数
 * @return uint32_t 读取的字节数
 * @note null
 */
uint32_t flash_ll_read(uint32_t addr, uint32_t *buf, uint32_t len);
/**
 * @brief 擦除扇区
 * @param  start            起始地址
 * @param  end              结束地址
 * @note 地址需4字节对齐
 */
void flash_ll_erase(uint32_t start, uint32_t end);

/***************************************Public Variables**********************************/


#endif
/* [] END OF FILE */
